#if !defined(__BOUTON_POUSSOIR_H)
#define __BOUTON_POUSSOIR_H

#include "interface.h"
#include "surface_graphique.h"
#include "observateur_evenement.h"

class actionneur_indicatif {
	bool clique_;
public:
	actionneur_indicatif() : clique_(false) {}
	void operator()(int x, int y) {
		clique_ = true;
	}
	
	operator bool() { return clique_; }
};

template <class Actionneur = actionneur_indicatif>
class bouton_poussoir : public observateur_evenement {
	surface_graphique &ma_surface_;
	Actionneur actionneur_;
public:
	bouton_poussoir(surface_graphique &s, Actionneur t = Actionneur()) throw();
	~bouton_poussoir() throw() {}
	
	void souris_cliquee(int,int,bool);
	void touche_pressee(int,int,bool) {}
	
	Actionneur operator()() { return actionneur_; }
};

#include "bouton_poussoir.hpp"

#endif
